package com.xj.reggie.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xj.reggie.common.CustomException;
import com.xj.reggie.entity.Category;
import com.xj.reggie.entity.Dish;
import com.xj.reggie.entity.Setmeal;
import com.xj.reggie.mapper.CategoryMapper;
import com.xj.reggie.service.CategoryService;
import com.xj.reggie.service.DishService;
import com.xj.reggie.service.SetmealService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @Author XJ
 * @Date 2022/10/18 16:27
 * @PackageName:com.xj.reggie.service.impl
 * @ClassName: CategoryServiceImpl
 * @Description: TODO
 * @Version 1.0
 */
@Service
public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService {

	@Autowired
	private DishService dishService;

	@Autowired
	private SetmealService setmealService;

	/**
	 * 根据id删除分类，删除前需要进行判断，关联了菜品、套餐的不删
	 * @param ids
	 */
	@Override
	public void remove(Long ids) {
		LambdaQueryWrapper<Dish> dishLambdaQueryWrapper=new LambdaQueryWrapper<>();
		//添加查询条件，根据分类id进行查询
		dishLambdaQueryWrapper.eq(Dish::getCategoryId,ids);
		int count1 = (int) dishService.count(dishLambdaQueryWrapper);

		//查询当前分类是否关联了菜品，如果已经关联，抛出一个业务异常
		if(count1>0){
			//已经关联了菜品，抛一个业务异常
			throw new CustomException("当前分类下关联了菜品,不能删除!");
		}
		//查询当前分类是否关联了套餐，如果已经关联，跑出一个业务异常
		LambdaQueryWrapper<Setmeal> setMealLambdaQueryWrapper = new LambdaQueryWrapper<>();
		//添加查询条件，根据分类id进行查询
		setMealLambdaQueryWrapper.eq(Setmeal::getCategoryId,ids);
		int count2 = (int) setmealService.count(setMealLambdaQueryWrapper);
		if(count2>0){
			//已经关联套餐，抛出一个业务异常
			throw new CustomException("当前分类下关联了套餐,不能删除!");
		}
		//正常删除分类
		super.removeById(ids);

	}
}
